package com.egao.common.module.company.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.egao.common.core.web.JsonResult;
import com.egao.common.core.web.PageParam;
import com.egao.common.module.company.entity.Preach;
import com.egao.common.module.company.entity.vo.*;
import com.egao.common.module.company.entity.vo.PreachFormVO;

import javax.servlet.http.HttpServletResponse;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 宣讲会信息(Preach)表服务接口
 * @author dl
 */
public interface PreachService extends IService<Preach> {

    /**
     * 宣讲会列表查询
     * @param pageParam 分页对象
     * @return PositionListVO 宣讲会列表VO
     */
    List<PreachListVO> listPage(PageParam<PreachListVO> pageParam);
    /**
     * 添加宣讲会信息
     * @param preachFormVO 宣讲会表单
     * @return JsonResult 结果对象
     */
    JsonResult savePreach(PreachFormVO preachFormVO);
    /**
     * 修改宣讲会信息
     * @param preachFormVO 宣讲会表单
     * @return JsonResult 结果对象
     */
    JsonResult updatePreach(PreachFormVO preachFormVO);
    /**
     * 失效宣讲会信息
     * @param preachFormVO 宣讲会表单
     * @return JsonResult 结果对象
     */
    JsonResult deletePreach(PreachFormVO preachFormVO);
    /**
     * 删除宣讲会信息
     * @param id 宣讲会信息编号
     * @return JsonResult 结果对象
     */
    JsonResult detail(Integer id);
    /**
     * 修改宣讲会信息
     * @param preachFormVO 宣讲会表单
     * @return JsonResult 结果对象
     */
    JsonResult checkPreach(PreachFormVO preachFormVO);
    /**
     * 删除宣讲会信息
     * @param preachFormVO 宣讲会表单
     * @return JsonResult 结果对象
     */
    JsonResult removePreach(PreachFormVO preachFormVO);
    /**
     * 取消宣讲会信息
     * @param preachFormVO 宣讲会表单
     * @return JsonResult 结果对象
     */
    JsonResult cancelPreach(PreachFormVO preachFormVO);
    /**
     * 学校添加宣讲会信息
     * @param preachFormVO 宣讲会表单
     * @return JsonResult 结果对象
     */
    JsonResult savePreachSchool(PreachFormVO preachFormVO);
    /**
     * 学校修改宣讲会信息
     * @param preachFormVO 宣讲会表单
     * @return JsonResult 结果对象
     */
    JsonResult updatePreachSchool(PreachFormVO preachFormVO);
    /**
     * 宣讲会统计
     * @param pageParam 宣讲会表单
     * @return JsonResult 结果对象
     */
    JsonResult countPreach(PageParam<PreachListVO> pageParam);

    /**
     * 有效的宣讲会
     * 取消状态正常且审核通过的宣讲会
     * @param startDate 举办开始时间
     * @param endDate 举办结束时间
     * @return List<Preach>
     */
    List<Preach> effectiveList(Date startDate, Date endDate);

    /**
     * 导出excel
     * @param page 请求参数（不含分页参数）
     * @param response response 响应下载excel
     */
    void exportExcel(Map<String, Object> page, HttpServletResponse response);
}
